home *** CD-ROM | disk | FTP | other *** search
- #include <LowMem.h>
- #include <A4Stuff.h>
- #include <QuickDraw.h>
- #include <Memory.h>
- #include <Resources.h>
- #include <Fonts.h>
- #include <Dialogs.h>
- #include <QDOffscreen.h>
- #include <string.h>
- #include <stdio.h>
- #include <Timer.h>
-
- int mungePos = 0;
- int mungeVal[100] =
- {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 21, -15, 17, 18, -12, -16, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 21, -15, 17, 18, -12, -16, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -16, -12, 18, 17, -15, 21,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- };
-
- void initMungePlug()
- {
- }
-
- void disposeMungePlug()
- {
- }
-
- typedef struct {
- TMTask task;
- Ptr mainBaseAddr;
- Size worldBytes;
- Ptr worldBuffer;
- short rowBytes;
- short phase;
- Rect size;
- short offset;
- } MyTaskRec;
-
- void doMungePlug(MyTaskRec* myTask)
- {
- EnterCodeResource ();
- short height = myTask -> size.bottom - myTask -> size.top;
- short phase = myTask -> phase;
- short rowBytes = myTask -> rowBytes;
- Ptr worldBuffer = myTask -> worldBuffer;
- Ptr screenBuffer = myTask -> mainBaseAddr;
-
- mungePos++;
- if(mungePos > 99)
- mungePos = 0;
-
- int i;
- for(i = 0; i < height; i++)
- {
- long offset = mungeVal[(mungePos + i) % 100];
-
- if(offset > 0)
- {
- ::BlockMoveData (worldBuffer + i * rowBytes,
- screenBuffer + i * rowBytes + offset,
- rowBytes);
- }
- else
- {
- ::BlockMoveData (worldBuffer + i * rowBytes - offset,
- screenBuffer + i * rowBytes,
- rowBytes);
- }
- }
- ExitCodeResource ();
- }
-
-